$(document).ready(function() {
    $("#calendario").datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: "dd/mm/yyyy",
        monthNamesShort: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
        dayNamesMin: ["Dom", "Lun", "Mar", "Mié", "Juv", "Vie", "Sáb"],
        onSelect: function() {
            cancelarSeleccion();
            generarCalendario($(this).datepicker('getDate'));
        }
    });
    var today = new Date();
    generarCalendario(today);
    function generarCalendario(hoy) {
        hoy.setHours(0, 0, 0);
        var nombreMeses = ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dec"]
        var nombreDias = ["Dom", "Lun", "Mar", "Mi&eacute", "Jue", "Vie", "S&aacuteb"];
        var dias = 21;
        var auxFecha = new Date(hoy);
        var fila1 = ["<table id='tablaFila1'><tr><td class='celda-1'>Habitaciones</td>"];
        do {
            fila1.push("<td id='celdaHeader" + dias + "' class='celda-2'>" + auxFecha.getDate() + "<br>" + nombreMeses[auxFecha.getMonth()] + "<br>" + nombreDias[auxFecha.getDay()] + "</td>");
            auxFecha.setDate(auxFecha.getDate() + 1); //Sumar un día
        } while (--dias);
        fila1.push("</tr>");
        fila1 = fila1.join("");
        document.getElementById('fila1').innerHTML = fila1;
        var contenidoTablaCalendario = ["<table id='tablaCalendario'>"];
        $.getJSON("generarCalendario?hoy=" + hoy, function(data) {
            $.each(data["habitaciones"], function(i, j) {//Recoore los tipos de habitaciones
                var tipoCompartida = "";
                if (j.tipo == "compartida") {
                    tipoCompartida = "compartida";
                }
                $.each(j.categorias, function(k, l) {//Recoore las categorias de habitaciones
                    contenidoTablaCalendario.push("<tr class='separadorCategorias " + tipoCompartida + "'><td class='tituloCategoria'>" + l.nombre + "</td><td class='noBorderLeft' colspan='22'></td></tr>");
                    $.each(l.habitaciones, function(m, n) {//Recoore las habitaciones
                        contenidoTablaCalendario.push("<tr id='idHabitacion-" + n.id_cuarto + "'class='seleccionable' data-idHabitacion='" + n.id_cuarto + "' data-nombreHabitacion='" + n.nombre + "' data-capacidadEstandar='" + l.capacidad_estandar + "'  data-capacidadAdicional='" + l.capacidad_adicional + "'><td class='celda-1 cancelarSeleccion'>" + n.nombre + "</td><td class='mediaCelda cancelarSeleccion'></td>");
                        auxFecha = new Date(hoy);
                        i = 20;
                        do {
                            var fechaConFormato = formatoFecha(auxFecha);
                            contenidoTablaCalendario.push("<td class='celda-2 f" + fechaConFormato + " ui-state-default cuadroSelecionable' data-diaCelda='" + fechaConFormato + "' data-dia='" + (i + 1) + "'><span class='mediaCeldaSelecionable'></span></td>");
                            auxFecha.setDate(auxFecha.getDate() + 1); //Sumar un día    
                        } while (--i);
                        contenidoTablaCalendario.push("<td class='mediaCelda cancelarSeleccion'></td></tr>");
                    });
                });
            });
            contenidoTablaCalendario.push("</table>");
            contenidoTablaCalendario = contenidoTablaCalendario.join("");
            document.getElementById('areaSelecionable').innerHTML = contenidoTablaCalendario;
            $("#tablaCalendario tr.seleccionable").selectable({
                cancel: ".cancelarSeleccion",
                filter: ".cuadroSelecionable",
                start: function(event, ui) {
                    cancelarSeleccion();
                    $(".celda-1", this).addClass("celdaHeaderSelecting"); //Resalto el cuarto y dias seleccionados
                    var idH = parseInt($(this).attr("data-idhabitacion"));
                    var capacidadEstandar = parseInt($(this).attr("data-capacidadEstandar"));
                    var capacidadAdicional = parseInt($(this).attr("data-capacidadAdicional"));
                    var select = [];
                    for (var i = 1; i <= capacidadEstandar; i++) {
                        select.push("<option>" + i + "</option>");
                    }
                    for (var i = (capacidadEstandar + 1); i <= (capacidadEstandar + capacidadAdicional); i++) {
                        select.push("<option class='selectCapacidadAdicional'>" + i + "</option>");
                    }
                    select = select.join("");
                    document.getElementById('selectCantidadPersonas').innerHTML = select;
                    $("#idH").val(idH);
                },
                selecting: function(event, ui) {
                    var dia = $(ui.selecting).attr("data-dia");
                    $("#celdaHeader" + dia + "").addClass("celdaHeaderSelecting");
                    dia--;
                    $("#celdaHeader" + dia + "").addClass("celdaHeaderSelecting");
                },
                unselecting: function(event, ui) {
                    var dia = $(ui.unselecting).attr("data-dia");
                    var primerCeldaSelecionada = $("td.ui-selecting:first", this).attr("data-dia");
                    if (dia - primerCeldaSelecionada != 1) {
                        dia--;
                    }
                    $("#celdaHeader" + dia + "").removeClass("celdaHeaderSelecting");
                },
                stop: function() {
                    var posicion = $("td.ui-selected:last", this).position();
                    posicion.top += 37;
                    $("#opcionesReserva").css({
                        top: "" + posicion.top + "px",
                        left: "" + posicion.left + "px",
                        display: "block"
                    });
                    var desde = $(".ui-selected:first", this).attr("data-diaCelda");
                    desde = desde.split("-");
                    desde = new Date(desde[0], desde[1] - 1, desde[2]);
                    var hasta = $(".ui-selected:last", this).attr("data-diaCelda");
                    hasta = hasta.split("-");
                    hasta = new Date(hasta[0], hasta[1] - 1, hasta[2]);
                    hasta.setDate(hasta.getDate() + 1); //Sumar un día  

                    var cantidaNoches = hasta.getTime() - desde.getTime();
                    cantidaNoches = (cantidaNoches / (24 * 3600 * 1000));
                    $("#desde").val(formatoFechaVista(desde));
                    $("#hasta").val(formatoFechaVista(hasta));
                    $("#cantidaNoches").val(cantidaNoches);
                }
            });
        });
    }
    $.event.add(window, "scroll", main_menu_scroll);
    var mainmenu = $('#tablaFila1');
    var startMenu = 338;
    function main_menu_scroll() {
        var p = jQuery(window).scrollTop();
        $(mainmenu).css('position', ((p) > startMenu) ? 'fixed' : 'static');
        $(mainmenu).css('top', ((p) > startMenu) ? '51px' : '');
    }

    $("#nuevaReserva").click(function() {
        cancelarSeleccion();
    });
    $("#accionCancelarSeleccion").click(function() {
        cancelarSeleccion();
    });
    $("#modalBloquearHabitacion").click(function() {
        cancelarSeleccion();
    });
    $("#abrirNuevaReserva").click(function() {
        resetFormQuienPaga();
        $("#modalNuevaReserva").modal();
    });
    $("#buttonDatosPersona").click(function(e) {
        resetFormQuienPaga();
        $("#datosEmpresa").hide();
        $("#datosPersona").show();
        $("#idCliente").val("");
        $("#quien").val("persona");
    });
    $("#buttonDatosEmpresa").click(function(e) {
        resetFormQuienPaga();
        $("#datosPersona").hide();
        $("#datosEmpresa").show();
        $("#idCliente").val("");
        $("#quien").val("empresa");
    });
    $("#esHuesped").change(function() {
        if ($(this).is(':checked')) {
            $("#formEsHuesped").show();
        }
        else {
            $("#formEsHuesped").hide();
        }
    });

    $("#documento").change(function(e) {
        var identificacion = $("#documento").val();
        var nacionalidad = $("#nacionalidad").val();
        if (identificacion != "" && nacionalidad != "") {
            cargarCliente(identificacion, nacionalidad, "persona");
        }
    });
    $("#nacionalidad").change(function(e) {
        var identificacion = $("#documento").val();
        var nacionalidad = $("#nacionalidad").val();
        if (identificacion != "" && nacionalidad != "") {
            cargarCliente(identificacion, nacionalidad, "persona");
        }
    });
    $("#identificacionEmpresa").change(function(e) {
        var identificacionEmpresa = $("#identificacionEmpresa").val();
        var paisEmpresa = $("#paisEmpresa").val();
        if (identificacionEmpresa != "" && paisEmpresa != "") {
            cargarCliente(identificacionEmpresa, paisEmpresa, "empresa");
        }
    });
    $("#paisEmpresa").change(function(e) {
        var identificacionEmpresa = $("#identificacionEmpresa").val();
        var paisEmpresa = $("#paisEmpresa").val();
        if (identificacionEmpresa != "" && paisEmpresa != "") {
            cargarCliente(identificacionEmpresa, paisEmpresa, "empresa");
        }
    });

    $("#formCrearReserva").submit(function(e) {
        if ($("#buttonDatosPersona").hasClass("active")) {
            if (!validarFormPersonaCrearReserva()) {
                return false;
            }
        }
        else if ($("#buttonDatosEmpresa").hasClass("active")) {
            if (!validarFormEmpresaCrearReserva()) {
                return false;
            }
        }

    });


    function formatoFecha(fecha) {
        var d = fecha.getDate();
        var m = fecha.getMonth() + 1;
        var y = fecha.getFullYear();
        return y + '-' + (m <= 9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
    }
    function formatoFechaVista(fecha) {
        var d = fecha.getDate();
        var m = fecha.getMonth() + 1;
        var y = fecha.getFullYear();
        return (d <= 9 ? '0' + d : d) + "/" + (m <= 9 ? '0' + m : m) + "/" + y;
    }
    function cancelarSeleccion() {
        $("#calendarioContenedor .celdaHeaderSelecting").removeClass("celdaHeaderSelecting");
        $("#tablaCalendario td.ui-selected").removeClass("ui-selected");
        $("#tablaCalendario td.hover").removeClass("hover");
        $("#opcionesReserva a").blur();
        $("#opcionesReserva").css("display", "none");
    }
    function resetFormQuienPaga() {
        $("#formCrearReserva .error").hide();
        $("#formEsHuesped").hide();
        $("#esHuesped").attr('checked', false);
        $("#quienPaga").find(':input').each(function() {
            var elemento = this;
            elemento.value = "";
        });
        document.getElementById('resultadoAjax').innerHTML = "";
         document.getElementById('resultadoAjax2').innerHTML = "";
        $("#idCliente").val("");
        $("#quien").val("persona");
        $("#buttonDatosPersona").addClass("active");
        $("#buttonDatosEmpresa").removeClass("active");
        $("#datosEmpresa").hide();
        $("#datosPersona").show();
        $("#resultadoAjax").hide();

    }
    function resetFormQuienPaga2() {
        $("#formCrearReserva .error").hide();
        $("#formEsHuesped").hide();
        $("#esHuesped").attr('checked', false);
        $("#quienPaga2").find(':input').each(function() {
            var elemento = this;
            elemento.value = "";
        });
        document.getElementById('resultadoAjax').innerHTML = "";
        $("#resultadoAjax").hide();
    }
    function resetFormQuienPaga2Empresa() {
        $("#formCrearReserva .error").hide();
        $("#formEsHuesped").hide();
        $("#esHuesped").attr('checked', false);
        $("#quienPaga2Empresa").find(':input').each(function() {
            var elemento = this;
            elemento.value = "";
        });
        document.getElementById('resultadoAjax2').innerHTML = "";
        $("#resultadoAjax2").hide();
    }
    function validarFormPersonaCrearReserva() {
        var flag = true;
        $("#formCrearReserva .error").hide();
        $("#datosPersona").find('.requerido').each(function() {
            var elemento = this;
            if (elemento.value == "") {
                $(this).focus();
                $(" + .error", this).show();
                flag = false;
                return false;
            }
            //alert("elemento.id=" + elemento.id + ", elemento.value=" + elemento.value);
        });
        if (flag && $("#esHuesped").is(':checked')) {
            $("#formEsHuesped").find('.requeridoHuesped').each(function() {
                var elemento = this;
                if (elemento.value == "") {
                    $(this).focus();
                    $(" + .error", this).show();
                    flag = false;
                    return false;
                }
            });
        }
        return flag;
    }

    function validarFormEmpresaCrearReserva() {
        var flag = true;
        $("#formCrearReserva .error").hide();
        $("#datosEmpresa").find('.requerido').each(function() {
            var elemento = this;
            if (elemento.value == "") {
                $(this).focus();
                $(" + .error", this).show();
                flag = false;
                return false;
            }
        });
        return flag;
    }

    function cargarCliente(identificacion, nacionalidad, tipo) {
        $.ajax({
            url: "cargarCliente",
            data: {
                identificacion: identificacion,
                nacionalidad: nacionalidad,
                tipo: tipo
            },
            type: 'POST',
            success: function(data) {
                if (tipo == "persona") {
                    if (data != "[]") {
                        data = JSON.parse(data);
                        //  alert(data[0]["nombre"]);
                        document.getElementById('resultadoAjax').innerHTML = "" + data[0]["nombre"] + " ya es cliente";
                        $("#idCliente").val(data[0]["id_cliente"]);
                        $("#tipoDocumento").val(data[0]["tipo_documento"]);
                        $("#nombre").val(data[0]["nombre"]);
                        $("#apellido").val(data[0]["apellido"]);
                        $("#fechaNacimiento").val(data[0]["fecha_nacimiento"]);
                        $("#telefono").val(data[0]["telefono"]);
                        $("#email").val(data[0]["email_cliente"]);
                        $("#estadoCivil").val(data[0]["estado_civil"]);

                        $("#resultadoAjax").css("color", "#669533");
                        $("#resultadoAjax").show();
                    } else {
                        $("#idCliente").val("");
                        resetFormQuienPaga2();
                        document.getElementById('resultadoAjax').innerHTML = "Este cliente es nuevo";
                        $("#resultadoAjax").css("color", "#888");
                        $("#resultadoAjax").show();
                    }
                }
                else if (tipo == "empresa") {
                    if (data != "[]") {
                        data = JSON.parse(data);
                        //  alert(data[0]["nombre"]);
                        document.getElementById('resultadoAjax2').innerHTML = "" + data[0]["nombre"] + " ya es cliente";
                        $("#idCliente").val(data[0]["id_cliente"]);
                        $("#nombreEmpresa").val(data[0]["nombre"]);
                        $("#telefonoEmpresa").val(data[0]["telefono"]);
                        $("#direccionEmpresa").val(data[0]["direccion"]);
                        $("#emailEmpresa").val(data[0]["email_cliente"]);

                        $("#resultadoAjax2").css("color", "#669533");
                        $("#resultadoAjax2").show();
                    } else {
                        $("#idCliente").val("");
                        resetFormQuienPaga2Empresa();
                        document.getElementById('resultadoAjax2').innerHTML = "Este cliente es nuevo";
                        $("#resultadoAjax2").css("color", "#888");
                        $("#resultadoAjax2").show();
                    }
                }

            }
        });
    }
});
